//
//  3.从尾到头打印链表.swift
//  数据结构与算法
//
//  Created by ZERO on 2021/5/17.
//

import Foundation
/*
 题目：输入一个链表，按链表从尾到头的顺序返回一个ArrayList。
 思路：我们可以直接使⽤列表的插⼊⽅法，每次插⼊数据，只插⼊在⾸位。
 */
func offer_3() {
    let node4 = ListNode(58, nil)
    let node3 = ListNode(24, node4)
    let node2 = ListNode(0, node3)
    let node1 = ListNode(67, node2)
    print(Solution().printListFromTailToHead(node1))
}

fileprivate class ListNode {
    public var val: Int
    public var next: ListNode?
    public init(_ val: Int = 0, _ next: ListNode? = nil) {
        self.val = val
        self.next = next
    }
}


fileprivate class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     * @param head ListNode类
     * @return int整型一维数组
     */
    func printListFromTailToHead ( _ head: ListNode?) -> [Int] {
        // write code here
        guard head != nil else { return [] }
        var arr = [Int]()
        var node = head
        while node != nil {
            arr.insert(node!.val, at: 0)
            node = node?.next
        }
        return arr
    }
}
